import java.util.Arrays;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 周斌
 * Date: 2024-05-12
 * Time: 21:05
 */
public class Main {
    //day5贪心算法练习力扣1005 K次取反后最大化的数组和
    public int largestSumAfterKNegations(int[] nums, int k) {
        int m = 0,numsMin = Integer.MAX_VALUE,n = nums.length;
        int sum = 0;//统计数组的最大和
        //统计一些数组的负数
        for(int x : nums) {
            if(x < 0) {
                m++;
            }
            numsMin = Math.min(numsMin,Math.abs(x));
        }
        //分类讨论

        //对数组排个序，从小到大的顺序
        Arrays.sort(nums);
        //1.m>k,将K个数转化正数
        if(m > k) {
            for(int i = 0; i < k;i++) {
                sum += Math.abs(nums[i]);
            }
            for(int i = k;i < n;i++) {
                sum += nums[i];
            }
        } else {
            //2.m<=k，把所有的负数转化为正数
            for(int i = 0;i < n;i++) {
                sum += Math.abs(nums[i]);

            }
            //k-m是奇数
            if((k-m) % 2 != 0) {
                sum -= numsMin * 2;
            }
        }
        return sum;
    }
    //day5贪心算法练习力扣409 最长回文串
    public int longestPalindrome(String s) {
        int sum = 0;
        //1.统计字符个数(计数数组统计)
        int[] array = new int[127];
        for(int i = 0;i <s.length();i++) {
            array[s.charAt(i)]++;
        }
        //2.相加字符个数
        for(int x : array) {
            sum += x / 2 * 2;
        }
        return sum < s.length() ? sum + 1 : sum;
    }
}
